package com.xaicode.locker.JavaSJMS.three.CreateMode.Singleton;

/**
 * 单例，改进
 * <b>但是，如果在构造函数中抛出异常，实例将永远得不到创建，也会出错</b>
 * @author Locker
 * 	  <br> 2017年5月2日 下午12:17:00
 * @version v1.0
 */
public class Singleton2 {

	// 私有构造方法，防止被实例化
	private Singleton2(){
	}
	
	// 此处使用一个内部类来维护单例
	private static class SingletonFactory {
		private static Singleton2 singleton2 = new Singleton2();
	}
	
	// 获取单例
	public static Singleton2 getInstance() {
		return SingletonFactory.singleton2;
	}
	
	//TODO ?? 如果该对象被用于序列化，可以保证对象在序列化前后保持一致
	public Object readResolve() {
		return getInstance();
	}
	
}
